home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1035 / 1035.xpi / chrome / 1clickweather.jar / content / 1clickweather / js / data / search.js < prev    next >
Text File  |  2008-10-05  |  6KB  |  202 lines

  1. // ∩┐╜ 2005 The Weather Channel Interactive, Inc.  All Rights Reserved.
  2.  
  3. var GlobalSearch = null;
  4.  
  5. function sendupdate(str) {
  6.     Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService).notifyObservers(null, "searchupdate", str);
  7. }
  8.  
  9. function loadSearch(){
  10.    try{
  11.       jsInclude("chrome://1clickweather/content/js/utils/definitions.js");
  12.       jsInclude("chrome://1clickweather/content/js/utils/datadumper.js");
  13.       jsInclude("chrome://1clickweather/content/js/utils/appconstants.js");
  14.       jsInclude("chrome://1clickweather/content/js/utils/network.js");
  15.  
  16.       try{
  17.          // fire up the config system.
  18.          // loadconfig.js can be included where ever you need access to config variables.
  19.          // it will pop GlobalUserConfig and GlobalAppConfig into existance
  20.          jsInclude("chrome://1clickweather/content/js/config/loadconfig.js");
  21.       }catch(e){
  22.          debug("loadconfig: " + e);
  23.       }
  24.  
  25.       GlobalSearch = new oSearch();
  26.  
  27.       try{
  28.           /*
  29.           alert(typeof(window.arguments[0]));
  30.           */
  31.           
  32.           if(typeof(window.arguments[0]) == "object"){          
  33.          /*
  34.               if(window.arguments[0].data['search']){
  35.         */
  36.              //alert("args: " + window.arguments[0].data);
  37.             document.getElementById("searchInput").value = window.arguments[0].data['search'];
  38.             fillSearchListBox();
  39.          }
  40.       }catch(e){ }
  41.  
  42.    }catch(e){
  43.       debug("error loading search: " + e);
  44.    }
  45. }
  46.  
  47. function oSearch(){
  48.    this.Search = function(location){
  49.       if(!location){
  50.          return(false);
  51.       }
  52.       // there are some cases where we get a location with the zip in ()
  53.       // so remove from the space just before the () to the end of the string
  54.       location = location.replace(/ \(.*/g, '');
  55.  
  56.       var dataUrl = "";
  57.       try {
  58.          var configUtils = new ConfigUtils();
  59.          
  60.          dataUrl = configUtils.getUrl(GlobalAppConfig, GlobalUserConfig, "Search");     }catch(e){
  61.          return(false);
  62.       }
  63.       dataUrl += location;
  64.  
  65.       if(dataUrl){
  66.          try{
  67.             var xmlRequest = new XMLRequest();
  68.             xmlRequest.setUrl(dataUrl);
  69.             var xmlDoc = xmlRequest.Get();
  70.  
  71.             // once we get the xml, parse it up
  72.             return(this.parseSearchXML(xmlDoc));
  73.          }catch(e){
  74.             debug("error in search get: " + e);
  75.             return(false);
  76.          }
  77.       }
  78.       return(false);
  79.    }
  80.  
  81.    this.parseSearchXML = function(xmlDoc){
  82.       if(!xmlDoc){
  83.          return(false);
  84.       }
  85.  
  86.       var node = xmlDoc.getElementsByTagName("search")[0].childNodes;
  87.       var x = 0;
  88.  
  89.       var Data = {};
  90.       // loop through all the children 
  91.       for(x = 0; x < node.length; x++){
  92.          try{
  93.             // if the nodes we find only have a value and no children, make them into variables
  94.             if((node[x].childNodes.length == 1) && (typeof(node[x].firstChild.nodeValue) == "string")){
  95.                var id = node[x].getAttribute("id");
  96.                Data[id] = new Array();
  97.  
  98.                Data[id] = node[x].firstChild.nodeValue;
  99.             }
  100.          }
  101.          catch(e){
  102.             debug('error parsing search xml: ' + e.message);
  103.             return(false);
  104.          }
  105.       }
  106.       return(Data);
  107.    }
  108.  
  109.     this.getLocationData = function(loc){
  110.         
  111.         if(loc){
  112.         
  113.             var dataUrl = "";
  114.             
  115.             try {
  116.                 var configUtils = new ConfigUtils();
  117.                 dataUrl = configUtils.getUrl(GlobalAppConfig, GlobalUserConfig, "Location", loc);
  118.              }catch(e){
  119.                 return(false);
  120.              }
  121.  
  122.          if(dataUrl){
  123.  
  124.             try{
  125.                 var xmlRequest = new XMLRequest();
  126.                    xmlRequest.setUrl(dataUrl);
  127.                    var locDoc = xmlRequest.Get();
  128.                    var country = locDoc.getElementsByTagName('ctry')[0].firstChild.nodeValue;
  129.                    var dnam = locDoc.getElementsByTagName('dnam')[0].firstChild.nodeValue;
  130.                
  131.                    var locString = loc + "|" + country + "|" + dnam;
  132.                    return(locString);
  133.             }catch(e){
  134.                 // debug("error in location get: " + e);
  135.                    return(false);
  136.             }
  137.          }
  138.       }else{
  139.          debug("error, invalid loc " + loc);
  140.       }
  141.       return(false);
  142.    }
  143. }
  144.  
  145. /* fillSearchListBox() */
  146. function fillSearchListBox(){
  147.  
  148.     /* get user selection */
  149.        var listBox = document.getElementById("searchList");
  150.        var loc = document.getElementById("searchInput").value;
  151.  
  152.        if(loc){
  153.        
  154.         try{
  155.             while(listBox.childNodes.length > 0) listBox.removeChild(listBox.childNodes[0]);
  156.           }
  157.           catch(e){
  158.             //alert("l: " + e);
  159.           }
  160.  
  161.         try{
  162.             /* Search data to selected location */
  163.             var Data = GlobalSearch.Search(loc);
  164.             
  165.             for(var i in Data){
  166.                 var item = document.createElement("listitem");
  167.                 item.setAttribute("label", Data[i]);
  168.                 item.setAttribute("value", i);
  169.                 listBox.appendChild(item);
  170.             }
  171.         }catch(e){
  172.             //alert("e: " + e);
  173.         }
  174.     }else{
  175.         try{
  176.             while(listBox.childNodes.length > 0) listBox.removeChild(listBox.childNodes[0]);
  177.           }catch(e){
  178.             //alert("l: " + e);
  179.           }
  180.        }
  181. }
  182.  
  183. /* saveSearchLocation () */
  184. function saveSearchLocation(){
  185.     
  186.     /* get listbox */
  187.     var listBox = document.getElementById("searchList");
  188.  
  189.     if(listBox.selectedItem.value != null){
  190.     
  191.         // get the locaton data
  192.         var locStr = GlobalSearch.getLocationData(listBox.selectedItem.value);
  193.    
  194.            if(locStr){
  195.             sendupdate(locStr);
  196.            }
  197.            window.close();
  198.        }
  199. }
  200.  
  201.  
  202.